package com.wcj.stack;


import java.util.Deque;
import java.util.LinkedList;
import java.util.Stack;

/**
 * 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作（push、pop、peek、empty）：
 *
 * 实现 MyQueue 类：
 *
 * void push(int x) 将元素 x 推到队列的末尾
 * int pop() 从队列的开头移除并返回元素
 * int peek() 返回队列开头的元素
 * boolean empty() 如果队列为空，返回 true ；否则，返回 false
 */
public class 用栈实现队列 {
    public static void main(String[] args) {
        MyQueue queue = new MyQueue();
        queue.push(1);
        queue.push(2);
        queue.peek();
        queue.pop();
        queue.empty();
    }
    static class MyQueue {
        Stack<Integer> inStack;
        Stack<Integer> outStack;
        public MyQueue() {
            inStack = new Stack<>();
            outStack = new Stack<>();
        }

        public void push(int x) {
            inStack.push(x);
        }

        public int pop() {
            if (outStack.isEmpty()){
                if (!inStack.isEmpty()){
                    int size = inStack.size();
                    for (int i = 0; i < size;i++){
                        outStack.push(inStack.pop());
                    }
                }
            }

            return outStack.pop();

        }

        public int peek() {
            if (outStack.isEmpty()){
                if (!inStack.isEmpty()){
                    int size = inStack.size();
                    for (int i = 0; i < size;i++){
                        outStack.push(inStack.pop());
                    }
                }
            }
            return outStack.peek();
        }

        public boolean empty() {
            if (inStack.isEmpty()&&outStack.isEmpty()){
                return true;
            }
            return false;
        }
    }

}
